import java.util.ArrayList;
import java.util.List;

public class demo3 {
    List<String>list;
    StringBuilder str;
    public List<String> letterCasePermutation(String s) {
        list=new ArrayList<>();
        str=new StringBuilder();
        dfs(s,0);
        return list;
    }
    public void dfs(String s,int path){
        if(path==s.length()){
            list.add(str.toString());
            return;
        }
        char temp=s.charAt(path);
        str.append(temp);
        dfs(s,path+1);
        str.setLength(str.length()-1);
        if('a'<=temp&&temp<='z'){
            str.append((char)(temp-32));
            dfs(s,path+1);
            str.setLength(str.length()-1);
        }
        else if('A'<=temp&&temp<='Z'){
            str.append((char)(temp+32));
            dfs(s,path+1);
            str.setLength(str.length()-1);
        }
    }
}
